package com.castle.fortress.admin.study.course.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.castle.fortress.admin.study.course.entity.StudyCoursewareEntity;
import com.castle.fortress.admin.study.course.dto.StudyCoursewareDto;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.ArrayList;
import java.util.Map;
import java.util.List;

/**
 * 课件管理 服务类
 *
 * @author castle
 * @since 2023-01-30
 */
public interface StudyCoursewareService extends IService<StudyCoursewareEntity> {

    /**
     * 分页展示课件管理列表
     * @param page
     * @param studyCoursewareDto
     * @return
     */
    IPage<StudyCoursewareDto> pageStudyCourseware(Page<StudyCoursewareDto> page, StudyCoursewareDto studyCoursewareDto);

	/**
	 * 分页展示课件管理扩展列表
	 * @param page
	 * @param studyCoursewareDto
	 * @return
	 */
	IPage<StudyCoursewareDto> pageStudyCoursewareExtends(Page<StudyCoursewareDto> page, StudyCoursewareDto studyCoursewareDto);
	/**
	 * 课件管理扩展详情
	 * @param id 课件管理id
	 * @return
	 */
    StudyCoursewareDto getByIdExtends(Long id);

    /**
     * 展示课件管理列表
     * @param studyCoursewareDto
     * @return
     */
    List<StudyCoursewareDto> listStudyCourseware(StudyCoursewareDto studyCoursewareDto);

	/**
	 * 查询课程和章节绑定的课件
	 * @param courseId 课程ID
	 * @param chapterId 章节ID
	 * @return
	 */
	List<StudyCoursewareDto> selectBycourseId(Long courseId, Long chapterId);

	/**
	 * 查询会员指定课程章节的课件相关信息
	 * @param courseId
	 * @param chapterId
	 * @param memberId
	 * @return
	 */
	List<StudyCoursewareDto> selectStudyListBycourseId(Long courseId, Long chapterId,Long memberId);
	/**
	 * 定时任务 保存pdf的图片
	 */
	void savePdf2Png();

	List<String> findByCoursewareIds(ArrayList<Long> existIds);

	/**
	 * 删除指定分类（及下属分类）下的资源
	 * @param id
	 */
	void delByClassifyId(Long id);

	/**
	 * 课件文件类型处理器
	 * @param dto
	 * @return
	 */
	String coursewareUrlHandle(StudyCoursewareDto dto);

	/**
	 * 初始化课件转PDF png 任务
	 */
	void initConversionPdfToPng();
}
